169914d49aa5dfc562fb399ccb29c9b946120c18,ninio-http/src/test/java/com/davfx/ninio/http/WebsocketTest.java,WebsocketTest,server,#Ninio#number#,30
Before Change
private static Disconnectable server(Ninio ninio, int port) throws IOException {
final byte[] indexHtml= Files.toByteArray(new File("src/test/resources/files/ws.html"));
Disconnectable tcp = ninio.create(TcpSocketServer.builder().bind(new Address(Address.ANY, port)).listening(HttpListening.builder().with(new SerialExecutor(WebsocketTest.class)).with(new HttpListeningHandler() {
@Override
public ConnectionHandler create() {
return new ConnectionHandler() {
@Override
public HttpContentReceiver handle(HttpRequest request, ResponseHandler responseHandler) {
LOGGER.debug("----> {}", request);
if (request.path.equals("/ws")) {
return new WebsocketHttpContentReceiver(request, responseHandler, false, new Listening() {
@Override
public Connection connecting(Address from, Connector connector) {
return new Connection() {
public Failing failing() {
return new Failing() {
@Override
public void failed(IOException e) {
LOGGER.warn("Socket failed <--", e);
}
};
}
public Connecting connecting() {
return new Connecting() {
@Override
public void connected(Connector connector, Address address) {
LOGGER.debug("Socket connected <--");
}
};
}
public Closing closing() {
return new Closing() {
@Override
public void closed() {
LOGGER.debug("Socket closed <--");
}
};
}
public Receiver receiver() {
return new Receiver() {
@Override
public void received(Connector connector, Address address, ByteBuffer buffer) {
String s = new String(buffer.array(), buffer.position(), buffer.remaining(), Charsets.UTF_8);
LOGGER.debug("Received {} <--: {}", address, s);
connector.send(null, ByteBuffer.wrap(("ECHO " + s).getBytes(Charsets.UTF_8)));
}
};
}
@Override
public Buffering buffering() {
return null;
}
};
}
});
} else if (request.path.equals("/")) {
responseHandler.send(HttpResponse.ok()).send(ByteBuffer.wrap(indexHtml)).finish();;
//responseHandler.send(new HttpResponse(HttpStatus.OK, HttpMessage.OK, ImmutableMultimap.of(HttpHeaderKey.CONTENT_LENGTH, String.valueOf(indexHtml.length)))).send(ByteBuffer.wrap(indexHtml)).finish();;
return null;
} else {
responseHandler.send(HttpResponse.notFound()).finish();
return null;
}
}
@Override
public void closed() {
}
@Override
public void buffering(long size) {
}
};
}
}).build()));
return tcp;
}
After Change
final byte[] indexHtml= Files.toByteArray(new File("src/test/resources/files/ws.html"));
Listener tcp = ninio.create(TcpSocketServer.builder().bind(new Address(Address.ANY, port)));
tcp.listen(HttpListening.builder().with(new SerialExecutor(WebsocketTest.class)).with(new HttpListeningHandler() {
@Override
public HttpContentReceiver handle(HttpRequest request, ResponseHandler responseHandler) {
LOGGER.debug("----> {}", request);
if (request.path.equals("/ws")) {
return new WebsocketHttpContentReceiver(request, responseHandler, false, new Listener.Callback() {
@Override
public void failed(IOException e) {
LOGGER.warn("Socket failed <--", e);
}
@Override
public void connected(Address address) {
LOGGER.debug("Socket connected <--");
}
@Override
public void closed() {
LOGGER.debug("Socket closed <--");
}
@Override
public Connection connecting(final Connected connecting) {
return new Connection() {
@Override
public void connected(Address address) {
}
@Override
public void received(Address address, ByteBuffer buffer) {
String s = new String(buffer.array(), buffer.position(), buffer.remaining(), Charsets.UTF_8);
LOGGER.debug("Received {} <--: {}", address, s);
connecting.send(null, ByteBuffer.wrap(("ECHO " + s).getBytes(Charsets.UTF_8)), new NopConnecterConnectingCallback());
}
@Override
public void closed() {
}
@Override
public void failed(IOException e) {
}
};
}
});
} else if (request.path.equals("/")) {
HttpContentSender s = responseHandler.send(HttpResponse.ok());
s.send(ByteBuffer.wrap(indexHtml), new NopConnecterConnectingCallback());
s.finish();
//responseHandler.send(new HttpResponse(HttpStatus.OK, HttpMessage.OK, ImmutableMultimap.of(HttpHeaderKey.CONTENT_LENGTH, String.valueOf(indexHtml.length)))).send(ByteBuffer.wrap(indexHtml)).finish();;
return null;
} else {
responseHandler.send(HttpResponse.notFound()).finish();
return null;
}
}
@Override
public void closed() {
}
@Override
public void connected() {
}
@Override
public void failed(IOException ioe) {
}
}).build());
return tcp;
}